
/**
 * Controler para la creacion de un evento.
 * @param $scope
 * @constructor
 */
const BOTON_NOTIFICAR_LABEL="Notificar";


function EventoCrear($scope,$location,angularFireCollection,$document,$window){
    $scope.botonNotificarLabel=BOTON_NOTIFICAR_LABEL;


    //Esto es malisiom pero no pude recupera una lista con IDS como celulara inteinte con
    //angularFire pero no me cargaba el dato en el scope al mometno de ejecutar obtenerContactosHabilitados(). :...(
    $scope.usuariosApp=angularFireCollection(new Firebase(getFireBaseUsersUrl()));
    $scope.evento={};//Se inicializa evento
    $scope.evento.invitados=[];


    $scope.notificarEvento=function(){
        notificarEvento($scope,$location);
    };

    $scope.mostrarContactos=function(){
        $scope.contactos=obtenerContactosHabilitados($scope.usuariosApp);
    };

    //Agregamos listeners
    initListeners($document,$location);
    //Carga la lista de contactos que posee le usuario en el telefono
    obtenerListaUsuarios($window,$scope);
}

function initListeners($document,$location){
    //Este listener en caso de apretarse el boton de back vuevle a la lista de eventos..
    $document[0].addEventListener("backbutton",
        function(){
            $location.path("/eventos");
        },
        false);
}





function notificarEvento($scope,$location){
    var listaEventos = new Firebase(getFireBaseEventUrl());

    var refEvento=listaEventos.push();
    $scope.evento.id=refEvento.name();
    agregarInvitadosSeleccionado($scope.evento,$scope.contactos);
    refEvento.set($scope.evento);
    //removemos invitados para que no queden en localStorage ya uqe osn variables
    $scope.evento.invitados=null;
    addEventoLocalStorage($scope.evento);
    $location.path("/eventos");
}

function agregarInvitadosSeleccionado(evento,contactos){
    for(var i=0; i< contactos.length;i++){
        if(contactos[i].seleccionado){
            alert('NOTIFICACION: '+contactos[i].nickName);
            //evento.invitados.push(angularItem2invitado(contactos[i]));
        }
    }
}

function angularItem2invitado(item){
    return {id:item.$id,avatar:item.avatar,nickName:item.nickName};
}

function obtenerContactosHabilitados(usuariosApp){
    var listaContactosTelefono=obtenerListaDelTelefono();
    var contactosHabilitados=[];
    for(var i=0;i<listaContactosTelefono.length;i++){
        var contacto=listaContactosTelefono[i];
        var usuarioRegistrado=obtenerUsuarioRegistrado(usuariosApp,contacto);
        if(usuarioRegistrado!=null){
            contactosHabilitados.push(usuarioRegistrado);
        };
    }
    return contactosHabilitados;
}


/*
 * Esta iteracion es maliisima la odio... pero
 * no pude hacer que me quede una coleccion con id el numero de telefono, ya que por algun motivo
 * angularFire no me estaba agregando la lista al $scope si es que utilizo angularFire(ref,$scope,'usuariosApp');
 */
function obtenerUsuarioRegistrado(usuariosApp,contacto){
    for(var i=0;i<usuariosApp.length; i++){
        if(usuariosApp[i].$id==contacto.cel){
            return usuariosApp[i];
        }
    }
    return null;

}



function obtenerListaUsuarios($window,$scope){
    var options = new ContactFindOptions();
    options.multiple=true;
    alert("entre");
    var fields = ["displayName", "name","phoneNumbers","photos"];
    $window.navigator.contacts.find(fields,
        function(contacts) {
            $('#invitadosHidden').val(angular.toJson(contacts));
            for (var i=0; i<contacts.length; i++) {
                //$scope.contactosTelefonicos.push({name:contacts[i].formatted, displayName:contacts[i].displayName});
                for(var j=0;j<contacts[i].phoneNumbers.length;j++){
                    showProperties(contacts[i].phoneNumbers[j]);
                }

            }
        }
        , onError, options);
}


function onError(contactError) {
    alert('onError!');
}

function showProperties(item){
    console.log("type:"+item.type);
    console.log("value:"+item.value);
    console.log("pref:"+item.pref);
}





